#pragma once

#include <string>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>
#include <algorithm>
#include <numeric>
#include <unordered_map>
#include <algorithm>

using namespace cv;
using namespace std;
class ImgProcess
{
public:
	ImgProcess();
	~ImgProcess();
	bool fileReading(string imgFolderPath, string imgFileName, string imgFormat, Mat& outputImg, int flags);

	void ScrewImgSplit(cv::Mat &input, cv::Mat &output,bool screw_side);
	void ScrewImgRotate(cv::Mat& input, cv::Mat& output, float angle);
	cv::Point2f rotateRectAroundImageCenter(int imgWidth, int imgHeight, float angle, float x, float y, float width, float height);

private:
	typedef struct imgFile {
		string fullPath;
		string folderPath = "";
		string fileName = "";
		string format = "";
	}imgFile;

	imgFile* file;
};

